$(function () {
	// 点击“去注册账号”的链接
	$('#link_reg').on('click', function () {
		$('.login-box').hide()
		$('.reg-box').show()
	})

	// 点击“去登录”的链接
	$('#link_login').on('click', function () {
		$('.login-box').show()
		$('.reg-box').hide()
	})

	// 从 layui 中获取 form 对象
	var form = layui.form
	var layer = layui.layer
	// 通过 form.verify() 函数自定义校验规则
	form.verify({
		// 自定义了一个叫做 pwd 校验规则
		pwd: [/^[\S]{6,12}$/, '密码必须6到12位，且不能出现空格'],
		// 校验两次密码是否一致的规则
		repwd: function (value) {
			// 通过形参拿到的是确认密码框中的内容
			// 还需要拿到密码框中的内容
			// 然后进行一次等于的判断
			// 如果判断失败,则return一个提示消息即可
			var pwd = $('.reg-box [name=password]').val()
			if (pwd !== value) {
				return '两次密码不一致！'
			}
		},
	})

	// 监听注册表单的提交事件
	$('#form_reg').on('submit', function (e) {
		// 1. 阻止默认的提交行为
		e.preventDefault()
		// 2. 发起Ajax的POST请求
		var data = {
			username: $('#form_reg [name=username]').val(),
			password: $('#form_reg [name=password]').val(),
		}
		$.post('/api/register', data, function (res) {
			if (res.status !== 0) {
				return layer.msg(res.message)
			}
			layer.msg('注册成功，请登录！')
			// 模拟人的点击行为
			$('#link_login').click()
		})
	})

	let validation = ''
	//点击更换验证码
	$('#codeImg').on('click', function () {
		/*在请求获得验证码那块：(该方案弃用，狗都不用，还是Vue方便)
    src在启动layui模板后，它认为的端口号是80端口，但是后端开的是8080，如果两个改成一样的，
    就会端口占用，所以就需要在baseAPI.js设置ajax能跨域的端口，
    因此需要通过attr修改成我们最终的请求接口，再通过prob设置验证码点击更换。
    */
		// var cp = $(this).attr('current_port')
		// $(this).prop('src', cp + '/api/getCaptcha?=t' + Date.now())
		$.get('/api/getCaptcha', (res) => {
			// console.log(res)
			validation = res.text
			codeImg.innerHTML = res.data
		})
	})

	//验证验证码，这个后端相应的接口应该要写入到login里面去
	$('#codeInput').on('blur', function () {
		if (
			$(this).val().length == 4 &&
			$(this).val().toLowerCase() == validation.toLowerCase()
		) {
			// layer.msg('验证码正确')
			// 监听登录表单的提交事件
			$('#form_login').submit(function (e) {
				// 阻止默认提交行为
				e.preventDefault()
				$.ajax({
					url: '/api/login',
					method: 'POST',
					// 快速获取表单中的数据
					data: $(this).serialize(),
					success: function (res) {
						if (res.status !== 0) {
							return layer.msg('登录失败！')
						}
						layer.msg('登录成功！')
						// 将登录成功得到的 token 字符串，保存到 localStorage 中
						localStorage.setItem('token', res.token)
						// 跳转到后台主页
						location.href = '/index.html'
					},
				})
			})
		} else {
			layer.msg('验证码输入错误')
		}
	})
})

//密码强度判断
function passwordChangeStatuss(pwd) {
	if (pwd == '' || pwd == null) {
		$('.pwd-item label').attr('class', 'layui-btn layui-btn-primary')
	} else {
		S_level = checkStrong(pwd)
		switch (S_level) {
			case 0:
				$('.pwd-item label').attr(
					'class',
					'layui-btn layui-btn-primary'
				)
			case 1:
				$('#l').attr('class', 'layui-btn layui-btn-danger')
				$('#m').attr('class', 'layui-btn layui-btn-primary')
				$('#h').attr('class', 'layui-btn layui-btn-primary')
				break
			case 2:
				$('#l').attr('class', 'layui-btn layui-btn-danger')
				$('#m').attr('class', 'layui-btn layui-btn-warm')
				$('#h').attr('class', 'layui-btn layui-btn-primary')
				break
			default:
				$('#l').attr('class', 'layui-btn layui-btn-danger')
				$('#m').attr('class', 'layui-btn layui-btn-warm')
				$('#h').attr('class', 'layui-btn')
		}
	}
}
//判断输入密码的类型
function CharMode(iN) {
	if (iN >= 48 && iN <= 57)
		//数字
		return 1
	if (iN >= 65 && iN <= 90)
		//大写
		return 2
	if (iN >= 97 && iN <= 122)
		//小写
		return 4
	else return 8
}
//bitTotal函数
//计算密码模式
function bitTotal(num) {
	modes = 0
	for (i = 0; i < 4; i++) {
		if (num & 1) modes++
		num >>>= 1
	}
	return modes
}
//返回强度级别
function checkStrong(sPW) {
	if (sPW.length <= 8) return 0 //密码太短
	Modes = 0
	for (i = 0; i < sPW.length; i++) {
		//密码模式
		Modes |= CharMode(sPW.charCodeAt(i))
	}
	return bitTotal(Modes)
}
